package com.weaving.monitor.mapper;

import com.weaving.monitor.entity.ProdTodayAmount;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.time.LocalDate;
import java.util.List;

/**
 * 生产今日产量数据访问层
 * 
 * 功能说明：
 * 1. 提供对prod_today_amount表的数据库操作
 * 2. 支持按日期、工人ID、机台号等条件查询
 * 3. 用于生产报表数据统计
 * 
 * @author 系统开发团队
 * @version 1.0
 * @since 2024-01-01
 */
@Mapper
public interface ProdTodayAmountMapper {
    
    /**
     * 根据日期查询生产报表数据
     * 
     * 功能说明：
     * 1. 查询指定日期的所有生产数据
     * 2. 按工人ID、机台号分组统计
     * 3. 用于生成生产报表
     * 
     * @param date 查询日期
     * @return 生产报表数据列表
     */
    List<ProdTodayAmount> selectByDate(@Param("date") LocalDate date);
    
    /**
     * 根据日期范围查询生产报表数据
     * 
     * 功能说明：
     * 1. 查询指定日期范围内的所有生产数据
     * 2. 按工人ID、机台号分组统计
     * 3. 用于生成生产报表
     * 
     * @param startDate 开始日期
     * @param endDate 结束日期
     * @return 生产报表数据列表
     */
    List<ProdTodayAmount> selectByDateRange(@Param("startDate") LocalDate startDate, @Param("endDate") LocalDate endDate);
    
    /**
     * 根据工人ID和日期查询生产数据
     * 
     * 功能说明：
     * 1. 查询指定工人在指定日期的生产数据
     * 2. 按机台号分组统计
     * 3. 用于个人生产报表
     * 
     * @param userId 工人ID
     * @param date 查询日期
     * @return 生产数据列表
     */
    List<ProdTodayAmount> selectByUserIdAndDate(@Param("userId") String userId, @Param("date") LocalDate date);
    
    /**
     * 根据机台号和日期查询生产数据
     * 
     * 功能说明：
     * 1. 查询指定机台在指定日期的生产数据
     * 2. 按工人ID分组统计
     * 3. 用于机台生产报表
     * 
     * @param machineId 机台号
     * @param date 查询日期
     * @return 生产数据列表
     */
    List<ProdTodayAmount> selectByMachineIdAndDate(@Param("machineId") String machineId, @Param("date") LocalDate date);
}
